package org.muyu.example1;


import org.muyu.example1.component.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 结构型模式 => 适配器模式实例
 *
 * 组成部件
 * 1. 适配接口【Target】 => LogDbOperateApi，将原来只能操作文件日志的接口转换为可以操作数据库日志的接口
 * 2. 已经存在的接口【Adaptee】 => LogFileOperateApi、LogFileOperate、LogModel 用于操作文件日志
 * 3. 适配器【Adapter】 => LogDbOperateApi、Adapter，Adapter是LogDbOperateApi的实现类
 *
 * 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于不兼容而不能一起工作的那些类可以一起工作
 *
 * 案例理解
 * 1.最开始，日志只能保存到文件中，现在需要将日志保存到数据库中，需要将文件日志的接口转换为数据库日志的接口
 * 2.那么基于原有的接口，我们先定义了LogDbOperateApi接口，用于描述数据库日志的操作的方法
 * 3.通过Adapter类，将LogDbOperateApi接口的实现类LogFileOperateApi转换为LogDbOperateApi接口的实现类
 *
 */
public class Client {
    public static void main(String[] args) {
        //准备日志内容，也就是测试的数据
        LogModel lm1 = new LogModel();
        lm1.setLogId("001");
        lm1.setOperateUser("admin");
        lm1.setOperateTime("2010-03-0210:08:18");
        lm1.setLogContent("这是一个测试");
        List<LogModel> list = new ArrayList<LogModel>();
        list.add(lm1);

        //创建操作日志文件的对象
        LogFileOperateApi logFileApi = new LogFileOperate("");

        //创建新版的操作日志的接口对象
        LogDbOperateApi api = new Adapter(logFileApi);

        //保存日志文件
        api.createLog(lm1);
        //读取日志文件的内容
        List<LogModel> allLog = api.getAllLog();
        System.out.println("allLog=" + allLog);
    }
}
